package org.ws.edu.task1.ikhmyz;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Intsorting {

    /**
     * Open and read a file, and return the lines in the file as a list of
     * Strings. (Demonstrates Java FileReader, BufferedReader, and Java5.)
     */
    private static String[] readFile(String filename) {
        List<String> records = new ArrayList<String>();
        try {
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String line;
            while ((line = reader.readLine()) != null) {
                records.add(line);
            }
            reader.close();

            String[] strArray = new String[records.size()];
            return records.toArray(strArray);

        } catch (Exception e) {
            System.err.format("Exception occurred trying to read '%s'.", filename);
            e.printStackTrace();
            return null;
        }
    }

    private static String[] sort(String[] strArray) {

        int count1 = 0;
        int count2 = strArray.length / 2;
        String[] strArray2 = new String[strArray.length];
        for (int i = 0; i < strArray.length; i++) {
            if (i % 2 == 0) {
                strArray2[count1] = strArray[i];
                count1++;
            } else {
                strArray2[count2] = strArray[i];
                count2++;
            }
        }
        return strArray2;
    }

    public static String[] sortStringArray(String[] qw) {
        String[] arrayToSort = new String[qw.length];
        Arrays.sort(qw);
        for (int i = 0; i < arrayToSort.length; i++)
            System.out.println(qw[i]);
        return qw;
    }

    private static void print(String comment, int[] array) {
        System.out.println(comment);
        for (int intValue : array) {
            System.out.println(intValue);
        }
    }

    private static void print(String comment, String[] array) {
        System.out.println(comment);
        for (String string : array) {
            System.out.println(string);
        }
    }

    public static int[] convertStringArraytoIntArray(String[] sarray) throws Exception {
        if (sarray != null) {
            int intarray[] = new int[sarray.length];
            for (int i = 0; i < sarray.length; i++) {
                intarray[i] = Integer.parseInt(sarray[i]);
            }
            return intarray;
        }
        return null;
    }

    public static int[] sortStringToInt(String[] qw) throws Exception {
        int[] fromStringToInt = convertStringArraytoIntArray(qw);
        //TODO:[AK]Какая смысловая нагрузка у  этой переменной?
        int[] arrayToSort = new int[fromStringToInt.length];

        Arrays.sort(fromStringToInt);
        for (int i = 0; i < arrayToSort.length; i++)
            System.out.println(fromStringToInt[i]);
        return fromStringToInt;
    }

    public static void main(String[] args) throws Exception {
        String[] strs = readFile("task1.txt");
        //TODO:[AK] посмотри  две реализации метода принт и какой вызывается из них в каком случае?
        print("Sorces: ", strs);
        int[] parsedstrs = sortStringToInt(strs);
        print("Parsed: ", parsedstrs);
        //Задание. Посмотреть что такое перерегрузка методов
        //и написать  по примеру метода прин метод который быдет сортировать  либо строки либо инты
    }
}
